package Text2;

import java.util.*;

public class Main {
    //    现在给你 N名农夫挤 N
//    头奶牛的工作时间表，请你求出：
//    1.至少存在一名农夫正在挤奶的连续时间段的最长长度。
//    2.没有任何农夫在挤奶的连续时间段的最长长度。
//第一行包含整数 N，表示农夫数量。
//    接下来 N行，每行包含两个非负整数 l,r，表示农夫挤奶的开始时刻和结束时刻。
    static int N = 5010;
    static PII[] piis = new PII[N];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        for (int i = 0; i < n; i++) {
            int l = in.nextInt();
            int r = in.nextInt();
            piis[i] = new PII(l, r);
        }
        Arrays.sort(piis, 0, n);
        int l = piis[0].x, r = piis[0].y;
        int res1 = r - l, res2 = 0;
        for (int i = 1; i < n; i++) {
            if (r >= piis[i].x) {
                r = Math.max(r, piis[i].y);
                res1 = Math.max(res1, r - l);
            } else {
                res2 = Math.max(res2, piis[i].x - r);
                l = piis[i].x;
                r = piis[i].y;
                res1 = Math.max(res1, r - l);
            }
        }
        System.out.println(res1+" "+res2);
    }
}

class PII implements Comparable<PII> {
    int x, y;

    public PII(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public int compareTo(PII o) {
        return Integer.compare(this.x, o.x);
    }
}
